package com.smart.thrift.constants;

public interface ThriftConstants {

    interface ServiceModel {

        /**
         * 服务模型 - 单线程阻塞式
         */
        String SERVICE_MODEL_SIMPLE = "simple";

        /**
         * 服务模型 - 单线程非阻塞式
         */
        String SERVICE_MODEL_NON_BLOCKING = "nonBlocking";

        /**
         * 服务模型 - 线程池
         */
        String SERVICE_MODEL_THREAD_POOL = "threadPool";

        /**
         * 服务模型 - 半同步半异步
         */
        String SERVICE_MODEL_HS_HA = "hsHa";

        /**
         * 服务模型 - 线程池选择器
         */
        String SERVICE_MODEL_THREADED_SELECTOR = "threadedSelector";

        /**
         * 默认的服务模型
         */
        String SERVICE_MODEL_DEFAULT = SERVICE_MODEL_HS_HA;
    }

    interface ServiceStatus {
        String SERVICE_REGISTRY_UP = "UP";
        String SERVICE_REGISTRY_DOWN = "DOWN";
    }

    interface DiscoveryType {

        /**
         * 使用consul作为注册中心
         */
        String CONSUL = "consul";

        /**
         * 使用zookeeper作为注册中心
         */
        String ZOOKEEPER = "zookeeper";

        /**
         * 默认的注册中心
         */
        String DISCOVERY_DEFAULT = ZOOKEEPER;
    }

    interface Definition {

        /**
         * Thrift Service的服务签名
         */
        String SERVICE_SIGNATURE = "serviceSignature";

        /**
         * Thrift Client的类型
         */
        String CLIENT_CLASS = "clientClass";

        /**
         * Thrift Client的TProcessor带参数构造器
         */
        String CLIENT_CONSTRUCTOR = "clientConstructor";

        /**
         * Thrift代理类的bean名称
         */
        String BEAN_NAME = "beanName";

        /**
         * Thrift代理类的类型
         */
        String BEAN_CLASS = "beanClass";

        /**
         * Thrift代理类的类型名称
         */
        String BEAN_CLASS_NAME = "beanClassName";

        /**
         * applicationContext
         */
        String APPLICATION_CONTEXT = "applicationContext";
    }
}
